package cn.han.collection;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

//本类用于进一步测试List接口
public class TestList2 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("喜羊羊");
        list.add("美羊羊");
        list.add("懒羊羊");
        list.add("沸羊羊");
        list.add("暖羊羊");
        list.add("小肥羊");
        System.out.println(list);

        //3.测试集合的迭代
        /*集合的迭代方式：
         * 1.for循环
         * 2.foreach
         * 3.iterator*/
        System.out.println("**********方式一**********");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        System.out.println("**********方式二**********");

        for (String i :
                list) {
            System.out.println(i);
        }
//        Iterator<String> i = list.iterator();
//        while (i.hasNext()) {//循环，判断是否有元素可迭代
//            String number = i.next();//根据迭代器获取本轮迭代到的元素
//            System.out.println(number);//打印
//
//        }
        System.out.println("**********方式三**********");

        Iterator<String> i = list.iterator();
        while (i.hasNext()){
            String s =i.next();
            System.out.println(s);
        }
        System.out.println("**********方式四**********");//属于list接口特有的迭代器
        // ，ListIterator<E>是Iterator的子接口还有自己的特有功能，逆序遍历，添加元素等
        ListIterator<String> i1 = list.listIterator();
        while (i1.hasNext()){
            String s = i1.next();
            System.out.println(s);
        }
        //逆序迭代
        System.out.println("**********方式五逆序迭代**********");
        ListIterator<String> i2 = list.listIterator();
        while (i2.hasNext()){
            System.out.println(i2.next());
            if (!i2.hasNext()){//知道迭代器没有下一个元素可迭代了--到最后了
                while (i2.hasPrevious()){
                    System.out.println(i2.previous());
                }
                break;
            }
        }




    }
}
